/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufsc.aps.jogodavida.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Daniel
 */
public class Jogador implements Serializable {
    
    private String nome;
    private boolean daVez;
    private List<Carta> cartasDaMao;
    private List<Conjunto> conjuntos;
    
    public Jogador(String nome) {
        this.nome = nome;
        cartasDaMao = new ArrayList<Carta>();
        conjuntos = new ArrayList<Conjunto>();
        adicionarConjuntos();
    }
    
    public void comprarCarta(Carta carta) {
        cartasDaMao.add(carta);
    }
   
    private void adicionarConjuntos() {
        for(int i = 65 ; i <= 68 ; i++) {
            char letra = (char) i;
            conjuntos.add(new Conjunto(TipoConjunto.FAMILIA,letra));
            conjuntos.add(new Conjunto(TipoConjunto.LAZER,letra));
            conjuntos.add(new Conjunto(TipoConjunto.PROFISSAO,letra));
            conjuntos.add(new Conjunto(TipoConjunto.SUSTENTAVEL,letra));
        }
    }
    
    public int pontuacaoPorTipoConjunto(TipoConjunto tipo) {
        int pontos = 0;
        for(Conjunto c : getConjuntos()) {
            if(c.getTipo() == tipo) {
                pontos += c.getPontuacaoTotal();
            }
        }
        return pontos;
    }
    
    public int pontuacaoPorConjunto(TipoConjunto tipo, char naipe) {
        int pontos = 0;
        for(Conjunto c : getConjuntos()) {
            if(c.getTipo() == tipo && c.getNaipe() == naipe) {
                pontos += c.getCartasDoConjunto().size();
            }
        }
        return pontos;
    }
    
    public int getQuantidadeCartas() {
        int quant = 0;
        for(Carta c : getCartasDaMao()) {
            if(c.getPontuacao() >= 0) {
                quant++;
            }
        }
        return quant;
    }
    
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public boolean isDaVez() {
        return daVez;
    }

    public void setDaVez(boolean daVez) {
        this.daVez = daVez;
    }

    public List<Carta> getCartasDaMao() {
        return cartasDaMao;
    }

    public void setCartasDaMao(List<Carta> cartasDaMao) {
        this.cartasDaMao = cartasDaMao;
    }

    public List<Conjunto> getConjuntos() {
        return conjuntos;
    }

    public void setConjuntos(List<Conjunto> conjuntos) {
        this.conjuntos = conjuntos;
    }
    
}
